/**
 * Object.is()：判断两个值是否是同一个值，实际上和===几乎一样，但有两个区别
 * Object.fromEntries()
 * Object.assign()
 */

// 细节：与 === 相比有两个地方不一样
console.log("+0 === -0",+0 === -0); // true
console.log("Object.is(+0,-0)",Object.is(+0,-0)); // false

console.log("NaN === NaN",NaN === NaN); // false
console.log("Object.is(NaN,NaN)",Object.is(NaN,NaN)); // true


// Object.fromEntries()：传入可遍历对象，成员是键值对数组
let obj1 = Object.fromEntries([
    ["name","Hydra"],
    ["age",35],
]);
console.log("obj1 = ",obj1);
// 常用于把Map对象转为对象
let map = new Map([
    ["name","Hydra"],
    ["age",35],
]);
let obj2 = Object.fromEntries(map);
console.log("obj2 = ",obj2);

// Object.assign()：合并多个对象到第一个目标对象中，最后返回目标对象。
/**
 * 1：仍然采用浅拷贝
 * 2：如何合并的源对象有同名的属性，那么后面对象覆盖前面对象的值
 * 3：返回的结果，就是传入的第一个对象
 * 用法一：合并多个对象为新对象
 * 用法二：把另一个对象中的属性，拷贝到一个对象中
 */

let obj = Object.assign({},obj1,obj2);
let obj3 = Object.assign(obj1,obj2);
console.log(obj3 === obj1); // true
